using UwinEducation.Domain.Entities;
using UwinEducation.Shared.Models;

namespace UwinEducation.Domain.IRepositories
{
    /// <summary>
    /// 预约仓储接口
    /// </summary>
    public interface IAppointmentRepository : IRepository<Appointment, Guid>
    {
        /// <summary>
        /// 获取预约分页列表
        /// </summary>
        Task<PagedResult<Appointment>> GetPagedListAsync(AppointmentPageRequest pageRequest);

        /// <summary>
        /// 获取预约详情
        /// </summary>
        Task<Appointment> GetDetailsByIdAsync(Guid id);

        /// <summary>
        /// 获取学生的预约列表
        /// </summary>
        Task<List<Appointment>> GetByStudentIdAsync(Guid studentId);

        /// <summary>
        /// 获取教师的预约列表
        /// </summary>
        Task<List<Appointment>> GetByTeacherIdAsync(Guid teacherId);

        /// <summary>
        /// 获取多个学生的预约列表
        /// </summary>
        Task<List<Appointment>> GetByStudentIdsAsync(List<Guid> studentIds);

        /// <summary>
        /// 根据ID批量获取预约
        /// </summary>
        Task<List<Appointment>> GetByIdsAsync(List<Guid> appointmentIds);
        Task<List<Appointment>> GetByOrderIdAsync(Guid orderId);
    }
}